package com.wfy.modules.sys.web;

import com.qiniu.util.StringMap;
import com.wfy.common.entity.Result;
import com.wfy.common.web.BaseController;
import com.wfy.modules.sys.dto.FileUploadDto;
import com.wfy.modules.sys.service.IFileService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: wangxindong
 * @date: 2018/5/27-22:13
 */
@Api(value = "文件上传")
@RestController
@RequestMapping(value = "/v1/fileUpload/")
public class FileUploadController extends BaseController {

    // ================================================================
    // Constants
    // ================================================================

    // ================================================================
    // Fields
    // ================================================================

    @Autowired
    private IFileService fileService;


    // ================================================================
    // Constructors
    // ================================================================

    // ================================================================
    // Methods from/for super Interfaces or SuperClass
    // ================================================================

    // ================================================================
    // Public or Protected Methods
    // ================================================================

    /**
     * 上传文件
     *
     * @param fileUploadDto
     * @return
     */
    @RequestMapping(value = "", method = RequestMethod.POST)
    public Result upload(@Valid @RequestBody FileUploadDto fileUploadDto) {
        return null;
    }


    /**
     * 获取文件上传的key--用于客户端直传
     *
     * @param key     key，可为 null
     * @param expires 有效时长，单位秒。默认3600s
     * @param policy  上传策略的其它参数，如 new StringMap().put("endUser", "uid").putNotEmpty("returnBody", "")。
     *                scope通过 bucket、key间接设置，deadline 通过 expires 间接设置
     * @param strict  是否去除非限定的策略字段，默认true
     * @return 生成的上传token
     */
    public Result uploadToken(String key, long expires, StringMap policy, boolean strict) {
        long deadline = System.currentTimeMillis() / 1000 + expires;
        return null;
    }

    /**
     * 文件上传
     *
     * @param file
     * @return
     */
    public Result uploadFile(@RequestParam(value = "file") MultipartFile file) {
        return null;
    }


    // ================================================================
    // Getter & Setter
    // ================================================================

    // ================================================================
    // Private Methods
    // ================================================================


    // ================================================================
    // Inner or Anonymous Class
    // ================================================================

    // ================================================================
    // Test Methods
    // ================================================================

}
